package model.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import model.bean.CidadeJB;
import model.bean.ClienteJB;
import model.bean.EstadoJB;
import model.bean.GeneroJB;
import util.ClienteHelper;


public class ClienteDAO {

	private String db;
	private String login;
	private String password;
	private String url;

	public ClienteDAO() throws ClassNotFoundException {

		// Carrega a classe do driver JDBC
		Class.forName("com.mysql.jdbc.Driver");

		// Configura��es de acesso ao banco
		db = "boxmovie";
		login = "root";
		password = "admin";
		//password = "vertrigo";
		url = "jdbc:mysql://localhost:3306/";

	}

	public Connection getConnection() throws Exception {

		return DriverManager.getConnection(url + db, login, password);
	}

	//Funcao para inserir um cliente no banco de dados
	public void inserirCliente(ClienteJB cliente){
		Connection conn = null;
		Statement st = null;
		
		try {
			conn = getConnection();
			st = conn.createStatement();
			
			String sqlInserir = "";
			 	   sqlInserir = "INSERT INTO cliente VALUES (NULL," +
								"'" + cliente.getNome() + "'," +
								"'" + cliente.getEmail() + "'," +
								"'" + cliente.getSenha() + "'," +
								"'" + ClienteHelper.dateToStringDB(cliente.getDtNascimento()) + "'," +
								"'" + cliente.getCidade().getEstado().getNome() + "'," +
								"'" + cliente.getCidade().getNome() + "'," + 
								"'" + cliente.getGeneros().get(0).getNome() + "'," + 
								"'" + cliente.getPromocao() + "')";
			 	   
								System.out.println(sqlInserir);
			st.executeUpdate(sqlInserir);
			
			
			
		} catch (Exception e) {
			e.printStackTrace();
			// TODO: handle exception
		}
		finally{
			try {
				conn.close();
				conn=null;
				st= null;
			} catch (SQLException e) {
				e.printStackTrace();
				// TODO: handle exception
			}
		}
	}
	
	public ClienteJB verificaCliente(String login, String senha)throws Exception{
		
		ClienteJB cliente = new ClienteJB();
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		
		try {
			conn = getConnection();
			st = conn.createStatement();
			
			String sql = "SELECT * FROM cliente WHERE email = '" + login + "' and senha ='" + senha + "'";
			rs= st.executeQuery(sql);
			
			if(rs.next()){
				cliente.setId(Integer.parseInt(rs.getString("id_cliente")));
				cliente.setNome(rs.getString("nome"));
				cliente.setEmail(rs.getString("email"));
				cliente.setSenha(rs.getString("senha"));
				
				cliente.setDtNascimento(rs.getDate("dt_Nascimento"));
				
					EstadoJB estado = new EstadoJB();
					CidadeJB cidade = new CidadeJB();
					estado.setNome(rs.getString("estado"));
					cidade.setEstado(estado);
					cidade.setNome(rs.getString("id_cidade"));
				
				cliente.setCidade(cidade);
				
					String auxGenero = rs.getString("generos");
					String[] auxGeneros = auxGenero.split("|");
					
					ArrayList<GeneroJB> generos = new ArrayList<GeneroJB>();
					GeneroJB genero = null;
					
					for(int i=0; i < auxGeneros.length; i ++){
						genero = new GeneroJB();
						genero.setNome(auxGeneros[i]);
						generos.add(genero);
					}
					
				cliente.setGeneros(generos);
				
			}
			else{
				cliente = null;
			}
			
			return cliente;
			
		} finally{
			try {
				conn.close();
				conn=null;
				st=null;
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	
	
	
}
